Online-Academy

Look, Read, Understand, Apply

Menu

OOAD - Object Oriented Analysis and Design

Factory and Observer

Not GoF Factory

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class form extends JFrame{
    JTextField tname;
    JTextField taddress;
    public form(){
        tname = new JTextField(20);tname.setBounds(20,20,100,25);
        taddress = new JTextField(20);taddress.setBounds(20,50,100,25);
        setLayout(null);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);
        add(tname);
        add(taddress);
        setSize(400,400);
    }
}
class bac_form extends form{
    JTextField jschool;
    public bac_form(){
        jschool = new JTextField("Enter School");jschool.setBounds(20,80,100,25);
        add(jschool);
    }
}
class mas_form extends form{
    JTextField jcollege;
    public mas_form(){
        jcollege = new JTextField("Enter College");jcollege.setBounds(20,80,100,25);
        add(jcollege);
    }
}
class form_factory{
    form f; 
    public form_factory(){
        //f = new form();
    }
    public form getForm(String type){
        switch(type){
            case "bachelor": f = new bac_form();
            break; 
            case "master": f = new mas_form();
            break;
        }
        return f; 
    }
}
class gui extends JFrame{
    JButton jbbac,jbmas;
    public gui(){
        setLayout(null);
        setSize(300,300);
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        jbbac = new JButton("Bachelor");jbbac.setBounds(20,20,100,25);
        jbmas = new JButton("Master");jbmas.setBounds(130,20,100,25);
        add(jbbac);
        add(jbmas);
        jbbac.addActionListener(new formFactory_demo("bachelor"));
        jbmas.addActionListener(new formFactory_demo("master"));
    }
}
class formFactory_demo implements ActionListener{
    String level; 
    form_factory ff;
    static form f;
    public formFactory_demo(String level){
        ff  = new form_factory();
        this.level = level;
    }
    public void actionPerformed(ActionEvent ae){
        f = ff.getForm(level);
    }
    public static void main(String[] aa){
        gui g = new gui();

    }
}

Observer

import java.util.*; interface students{ public void setName(String n); public String getName(); public void getNotification(); } class student implements students { String name; String message; teacher t; public student(){} public student(teacher t){ this.t = t; this.t.register(this); } public void setName(String name){ this.name = name; } public String getName(){return name;} public void getNotification(){ this.message = t.getMessage(); System.out.println(name+" Message: "+this.message); } } class teacher{ String message; ArrayList list; public teacher(){list = new ArrayList();} public void updateMessage(String message){ this.message = message; notifyall(); } public String getMessage(){return message;} public void register(students s){list.add(s);} public void notifyall(){ for (students s : list) { s.getNotification(); } } } class observer{ public static void main(String[] para){ teacher t = new teacher(); student s = new student(t);s.setName("Anil"); student s1 = new student();s1.setName("Laxmi"); student s2 = new student(t);s2.setName("Prabin"); student s3 = new student(t);s3.setName("Soheel"); t.updateMessage("Today is holiday!!!"); } }